招生考试网
学历| 高考 美术高考 考研 自考 成考 专升本 中考 会考 外语| 四六级 职称英语 商务英语 公共英语 日语能力 翻译资格 JTEST
资格| 公务员 报关员 银行从业 司法 导游 教师资格 报关 财会| 会计证 经济师 会计职称 注册会计 税务师 资产评估 审计师
工程| 一建 二建 造价师 造价员 咨询师 监理师 安全师 医学| 卫生资格 执业医师 执业药师 执业护士 | 教案 论文 文档
IT类| 计算机等级 计算机软考 职称计算机 高校计算机 推荐-国家公务员 事业单位招聘 军校国防生 自主招生 艺术特长生 招飞
 3773考试网 - 计算机等级考试 - 试题答案 - 正文

计算机等级考试二级笔试样卷C语言程序设计

来源:招生考试网 2009-3-9 13:56:01

一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,共70分)

   下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

 

1)下列选项中不符合良好程序设计风格的是

A) 源程序要文档化      B) 数据说明的次序要规范化

C) 避免滥用goto语句   D) 模块设计要保证高耦合、高内聚

 

2)从工程管理角度,软件设计一般分为两步完成,它们是

A) 概要设计与详细设计  B) 数据设计与接口设计

C) 软件结构设计与数据设计  D) 过程设计与数据设计

 

3)下列选项中不属于软件生命周期开发阶段任务的是

    A)软件测试     B)概要设计 C)软件维护 D)详细设计

 

4)在数据库系统中,用户所见的数据模式为

    A) 概念模式    B)外模式  C)内模式   D)物理模式

 

5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和

A) 编码设计    B) 测试阶段    C)运行阶段 D)物理设计

 

6设有如下三个关系表

  

R

 

S

 

 

T

 

 

 

A

 

B

C

 

A

B

C

 

 

m

 

1

3

 

m

1

3

 

 

n

 

 

 

 

n

1

3

 

下列操作中正确的是

ATRS      BTRS

CTR×S      DTR/S

 

7)下列叙述中正确的是

    A)一个算法的空间复杂度大,则其时间复杂度也必定大

    B)一个算法的空间复杂度大,则其时间复杂度必定小

    C)一个算法的时间复杂度大,则其空间复杂度必定小

D)上述三种说法都不对

 

8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为

A63   B64   C6    D7

 

9数据库技术的根本目标是要解决数据的

A)存储问题 B)共享问题 C)安全问题 D)保护问题

 

10)对下列二叉树

进行中序遍历的结果是

AACBDFEG  BACBDFGE  CABDCGEF  DFCADBEG

 

11)下列叙述中错误的是

    A)一个C语言程序只能实现一种算法

    BC程序可以由多个程序文件组成

    CC程序可以由一个或多个函数组成

    D)一个C函数可以单独作为一个C程序文件存在

 

12)下列叙述中正确的是

    A)每个C程序文件中都必须要有一个main()函数

    B)在C程序中main()函数的位置是固定的

    CC程序中所有函数之间都可以相互调用,与函数所在位置无关

    D)在C程序的函数中不能定义另一个函数

 

13)下列定义变量的语句中错误的是

    Aint  _int;       Bdouble  int_;      Cchar  For;            Dfloat  US$;

14)若变量xy已正确定义并赋值,以下符合C语言语法的表达式是

    A++x,y=x--        Bx+1=y          Cx=x+10=x+y         Ddouble(x)/10

 

15)以下关于逻辑运算符两侧运算对象的叙述中正确的是

    A)只能是整数01                B)只能是整数0或非0整数

    C)可以是结构体类型的数据         D)可以是任意合法的表达式

 

16)若有定义int  x,y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条件表达式(x-y) 等价的是

    A(x-y>0)      B(x-y<0)        C(x-y<0||x-y>0)   D(x-y==0)

 

17)有以下程序

    main()

    { int  x, y, z;

      x=y=1;

      z=x++,y++,++y;

      printf("%d,%d,%d\n",x,y,z);

    }

程序运行后的输出结果是

    A2,3,3            B2,3,2              C2,3,1          D2,2,1

 

18)设有定义:int  a;    float  b;    执行 scanf("%2d%f",&a,&b); 语句时,若从键盘输入876  543.0<回车>ab的值分别是

    A876543.000000               B876.000000

    C87543.000000                D76543.000000

 

19)有以下程序

    main()

    { int  a=0, b=0;

      a=10;                     /*  a赋值

      b=20;                         b赋值     */

      printf("a+b=%d\n",a+b);   /*  输出计算结果 */

    }

程序运行后的输出结果是

    Aa+b=10           Ba+b=30       C30          D)出错

 

 

20)在嵌套使用if语句时,C语言规定else总是

    A)和之前与其具有相同缩进位置的if配对

    B)和之前与其最近的if配对

    C)和之前与其最近的且不带elseif配对

    D)和之前的第一个if配对

 

21)下列叙述中正确的是

    Abreak语句只能用于switch语句

    B)在switch语句中必须使用default

    Cbreak语句必须与switch语句中的case配对使用

    D)在switch语句中,不一定使用break语句

 

22)有以下程序

    main()

    { int  k=5;

      while(--k)  printf("%d",k -= 3);

      printf("\n");

    }

执行后的输出结果是

    A1           B2            C4              D)死循环

 

23)有以下程序

    main()

    { int  i;

      for(i=1; i<=40; i++)

      { if(i++%5==0)

           if(++i%8==0)  printf("%d ",i);

      }

      printf("\n");

    }

执行后的输出结果是

    A5            B24             C32             D40

 

24)以下选项中,值为1的表达式是

    A1 –'0'          B1 - '\0'       C'1' -0         D'\0' - '0'

 

 

25)有以下程序

    fun(int  x, int  y){ return (x+y); }

    main()

    { int  a=1, b=2, c=3, sum;

      sum=fun((a++,b++,a+b),c++);

      printf("%d\n",sum);

    }

执行后的输出结果是

    A6            B7             C8            D9

 

26)有以下程序

    main()

    {  char  s[]="abcde";

       s+=2;

       printf("%d\n",s[0]);

    }

执行后的结果是

    A)输出字符aASCII         B)输出字符cASCII

    C)输出字符c                    D)程序出错

 

27)有以下程序

    fun(int  x, int  y)

    { static int  m=0, i=2;

      i+=m+1;    m=i+x+y;    return m;

    }

    main()

    { int  j=1, m=1, k;

      k=fun(j,m);    printf("%d,",k);

      k=fun(j,m);    printf("%d\n",k);

    }

执行后的输出结果是

    A5, 5         B5, 11            C11, 11       D11, 5

 

28)有以下程序

    fun(int  x)

    { int  p;

      if(x==0||x==1)  return(3);

      p=x-fun(x-2);

      return p;

    }

    main()

    {  printf("%d\n",fun(7)); }

执行后的输出结果是

    A7            B3            C2            D0

 

29)在16位编译系统上,若有定义int  a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是

    Ap向高地址移了一个字节        Bp向高地址移了一个存储单元

    Cp向高地址移了两个字节        Dpa+1等价

 

30)有以下程序

    main()

    { int  a=1, b=3, c=5;

      int  *p1=&a, *p2=&b, *p=&c;

      *p =*p1*(*p2);

      printf("%d\n",c);

    }

执行后的输出结果是

    A1            B2            C3            D4

 

31)若有定义:int w[3][5]; ,则以下不能正确表示该数组元素的表达式是

    A*(*w+3)      B*(w+1)[4]        C*(*(w+1))        D*(&w[0][0]+1)

 

32)若有以下函数首部

    int  fun(double  x[10], int  *n)

则下面针对此函数的函数声明语句中正确的是

    Aint  fun(double x, int *n);      Bint  fun(double  , int );

    Cint  fun(double *x, int n);      Dint  fun(double *,  int *);

 

33)有以下程序

    void change(int k[ ]){ k[0]=k[5]; }

    main()

    { int  x[10]={1,2,3,4,5,6,7,8,9,10},n=0;

      while( n<=4 )  { change( &x[n]) ; n++; }

      for(n=0; n<5; n++)  printf("%d ",x[n]);

      printf("\n");

    }

程序运行后输出的结果是

    A6 7 8 9 10       B1 3 5 7 9       C1 2 3 4 5       D6 2 3 4 5

 

34)有以下程序

    main()

    { int  x[3][2]={0}, i;

      for(i=0; i<3; i++)    scanf("%d",x[i]);

      printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);

    }

若运行时输入:2 4 6<回车>,则输出结果为

    A2  0  0      B2  0  4      C2  4  0      D2  4  6

 

35)有以下程序

    int add( int  a,int  b){ return (a+b);  }

    main()

    { int  k, (*f)(), a=5,b=10;

      f=add;

     

    }

则以下函数调用语句错误的是

    Ak=(*f)(a,b);                 Bk=add(a,b);

    Ck= *f(a,b);                      Dk=f(a,b);

 

36)有以下程序

    #include   

    main( int  argc, char  *argv[ ])

    { int  i=1,n=0;

      while (i

      printf("%d\n",n);

    }

该程序生成的可执行文件名为:proc.exe。若运行时输入命令行:

    proc  123  45  67

则程序的输出结果是

    A3            B5            C7            D11

 

37)有以下程序

    # include   

    # define    N    5

    # define    M    N+1

    # define    f(x)   (x*M)

    main()

    { int  i1, i2;

      i1 = f(2) ;

      i2 = f(1+1) ;

      printf("%d  %d\n", i1, i2);

    }

程序的运行结果是

    A12  12       B11  7        C11  11       D12  7

 

38)有以下结构体说明、变量定义和赋值语句

    struct STD

    { char  name[10];

      int  age;

      char  sex;

    } s[5],*ps;

    ps=&s[0];

则以下scanf函数调用语句中错误引用结构体变量成员的是

    Ascanf("%s",s[0].name);          Bscanf("%d",&s[0].age);

    Cscanf("%c",&(ps->sex));         Dscanf("%d",ps->age);

 

39)若有以下定义和语句

    union data

    {  int  i;   char  c;   float  f; } x;

    int  y;

    则以下语句正确的是

    Ax=10.5;      Bx.c=101;     Cy=x;         Dprintf("%d\n",x);

 

40)有以下程序

    #include 

    main()

    { FILE  *fp;    int  i;

      char  ch[]="abcd",t;

      fp=fopen("abc.dat","wb+");

      for(i=0; i<4; i++) fwrite(&ch[i],1,1,fp);

      fseek(fp,-2L,SEEK_END);

      fread(&t,1,1,fp);

      fclose(fp);

      printf("%c\n",t);

    }

程序执行后的输出结果是

    Ad            Bc            Cb            Da

 

二、填空题(每空2分,共30分)

    请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。

 

1)下列软件系统结构图

的宽度为  1 

 

2  2  的任务是诊断和改正程序中的错误

 

3一个关系表的行称为   3   

 

4按“先进后出”原则组织数据的数据结构是  4    

 

5)数据结构分为线性结构和非线性结构,带链的队列属于  5   

 

6)设有定义:float  x=123.4567;,则执行以下语句后的输出结果是 6

        printf("%f\n",(int)(x*100+0.5)/100.0);

 

7)以下程序运行后的输出结果是 7

    main()

    { int  m=011,n=11;

      printf("%d  %d\n",++m, n++);

    }

 

8)以下程序运行后的输出结果是 8

    main()

    { int  x,a=1,b=2,c=3,d=4;

      x=(a   x=(x   x=(d>x) ? x : d;

      printf("%d\n",x);

    }

 

9)有以下程序,若运行时从键盘输入:18,11<回车>,则程序的输出结果是 9

    main()

    {  int  a,b;

       printf("Enter a,b:");   scanf("%d,%d",&a,&b);

       while(a!=b)

       {  while(a>b) a -= b;

          while(b>a) b -= a;

        }

       printf("%3d%3d\n",a,b);

}

 

10)以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。

    #include   

    main()

    { int  n,s;

      printf("Enter a number : ");   scanf("%d",&n);

      printf("Output:  ");

      do

      {  s=n%10;  printf("%d",s);  10 ;  }

      while(n!=0);

      printf("\n");

    }

 

11)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

        y1=(x+8)2-2 (x+8)+6

        y2=sin2(x)-2sin(x)+6

请填空。

    #include   "math.h"

    double fun(double  x){ return (x*x-2*x+6); }

    main()

    { double  x,y1,y2;

      printf("Enter x:");    scanf("%lf",&x);

      y1=fun( 11 );

      y2=fun( 12 );

      printf("y1=%lf,y2=%lf\n",y1,y2);

    }

 

12)下面程序的功能是:将NN列二维数组中每一行的元素进行排序,第0行从小到大排序,第1行从大到小排序,第2行从小到大排序,第3行从大到小排序,例如:

#define    N    4

    void sort(int  a[][N])

    { int  i, j, k, t;

      for (i=0; i

        for (j=0; j

          for (k=  13 ; k

           /*判断行下标是否为偶数来确定按升序或降序来排序*/

            if ( 14 ? a[i][j]a[i][k])

            {  t = a[i][j];

               a[i][j]=a[i][k];

               a[i][k] = t;

            }

    }

    void outarr(int  a[N][N])

    {    ……    }

    main()

    { int  aa[N][N]={{2,3,4,1},{8,6,5,7},{11,12,10,9},{15,14,16,13}};

      outarr(aa); /*以矩阵的形式输出二维数组*/

      sort(aa);

      outarr(aa);

    }

 

13)下面程序的运行结果是:15 

    #include  

    int f(int  a[],int  n)

    { if(n>1)

        return a[0] + f(a+1, n-1);

      else

        return a[0];

    }

    main()

    { int  aa[10]={1,2,3,4,5,6,7,8,9,10}, s;

      s = f(aa+2,4);    printf("%d\n", s);

    }

 

 


  • 上一个文章:
  • 网站版权与免责声明
    ①由于各方面情况的不断调整与变化,本网所提供的相关信息请以权威部门公布的正式信息为准.
    ②本网转载的文/图等稿件出于非商业性目的,如转载稿涉及版权及个人隐私等问题,请在两周内邮件fjksw@163.com联系.
    最新文章


    | 关于我们 | 联系我们 | 版权申明 | 网站导航 |
    琼ICP备12003406号